// axios二次封装
import axios from 'axios'
import { ElMessage } from 'element-plus'
import useUserStore from '@/stores/modules/user'
import router from '@/router'


// 返回值

// 创建axios实例
const request  = axios.create({
    baseURL: '', // 设置请求的基础地址
    timeout: 50000 // 设置请求超时时间
})

// 请求拦截器
request.interceptors.request.use((config) => {
    // 用户仓库
    const userStore = useUserStore()
    // 获取token
    const token = userStore.token
    // 设置请求头
    config.headers.token = token
    // 在发送请求之前做些什么
    return config
},(error) => {
    // 对请求错误做些什么
    return new Promise(error)
})

// 响应拦截器
request.interceptors.response.use((response) => {
    // console.log(response);
    
    // 对响应数据做点什么
    if(response.data.code === 203) {
        ElMessage.error("token过期, 请重新登录")
        useUserStore().logout()
        router.push('/login')
        return 
    }
    return response.data
},(error) => {
    // 对响应错误做点什么
    let message = ''
    const status = error.response?.status
switch(status) {
    case 401:
        message = '登录过期，请重新登录'
        
        break
    case 403:
        message = '无权访问'
        break
    case 404:
        message = '请求资源不存在'
        break
    case 500:
        message = '服务器内部错误'
        break
    default:
        message = '网络连接错误'
        break


}
    // 提示用户
    ElMessage.error(message)

    return Promise.reject(error)
})

// 默认导出
export default request